Каждый вопрос заслуживает отдельного обсуждения, а на все стало лень ответ печатать, когда начал.
Печатать реально долго, легче было реализовать примеры в карте:
Кроме последнего пункта, его нужно персонально рассматривать, так как игра не подразумевает использование для юнита двух списков. Например, можно наполнить список построек у юнита всеми зданиями, часть из которых блокировать при открытии одного списка и разблокировать при открытии второго, но это подходит, когда один рабочий. Можно сделать второй список из книги заклинаний, куда добавлены способности на основе игрушечных строений, чтобы было видно карту пути и всё такое, но там для них используется один приказ, то есть всегда одинаковое здание будет при нажатии на любую способность, а ещё нет стоимости золота и дерева, что тоже придётся как-то ваять триггерно. Можно перевоплощать юнита при смене списка в другого, но там тоже сложности, не помню точно какие, вроде бы связаны с расой, так как все строят по-разному.
С точкой сбора всё просто. Способность у игрока не заблокировать, потому нужно забрать её у всех зданий, которые есть на карте, либо будут построены.
Группа из максимум 9 юнитов работает немножко коряво, ранее мы с PT153 находили какой-то вариант, чтобы работало быстро, но лень пользоваться поиском. Вроде каждую 0.01 секунду проверялось количество выбранных юнитов, лишние удалялись из выбора.
Чтобы не было очереди, пришёл в голову лишь вариант с апгрейдом здания. Но у меня реализован просто пример для одного конкретного здания, а для нескольких абстрактных зданий нужно делать текстовым триггером, который будет для каждого здания запускать локальный таймер на нужное время и добавлять анимационный текстаг work. По отмене апгрейда, либо истечению таймера анимационный тег удаляется и создаётся воин, к которому привязывается соответствующий звук. Но есть и другие варианты, типа создавать внутри здания другое, которое реально будет производить юнитов, когда заказал апгрейд, там иная реализация. И не упомянул про затрачиваемые ресурсы. Потребуется забирать/возвращать часть ресурсов при отмене апгрейда.
На примере триггеров и фиолетовых строк в редакторе объектов смотри, как сделано улучшение Бугая в Дренорского бугая.
Конечно, мог бы сделать MUI триггер на GUI для отсутствия очереди, но это было бы громоздко и в техническом смысле уродливо. производящие здания заносились бы в массив, для которого будет массив таймеров, которые будут заноситься в виде событий на истечение таймера в другой триггер, а точнее будет несколько массивов таймеров, по максимальному числу тренируемых юнитов в любом производящем здании.
function BuyItem takes unit FromShop,integer ItemID,unit ToUnit returns boolean
if IssueNeutralTargetOrder(GetOwningPlayer(ToUnit), FromShop, "smart", ToUnit) or IssueTargetOrder(FromShop, "smart", ToUnit) then
return IssueNeutralImmediateOrderById(GetOwningPlayer(ToUnit), FromShop, ItemID) or IssueImmediateOrderById(FromShop, ItemID)
endif
return false
endfunction
function Trig_Pokupka_Conditions takes nothing returns boolean
if ( not ( GetTriggerUnit() == gg_unit_Othr_0049 ) ) then
return false
endif
return true
endfunction
function Trig_Pokupka_Actions takes nothing returns nothing
call BuyItem(ТВОЙ_МАГАЗ, ИД_СВИТКА, gg_unit_Othr_0049)
endfunction
===========================================================================
function InitTrig_Pokupka takes nothing returns nothing
set gg_trg_Pokupka = CreateTrigger( )
call TriggerRegisterUnitInRangeSimple( gg_trg_Pokupka, 256, gg_unit_ngme_0056 )
call TriggerAddCondition( gg_trg_Pokupka, Condition( function Trig_Pokupka_Conditions ) )
call TriggerAddAction( gg_trg_Pokupka, function Trig_Pokupka_Actions )
endfunction
Ван Рок, ты задал много хороших вопросов и если почитаешь статьи о Jass, то узнаешь на них ответ. В представленном виде это не триггер с условиями и ивентом, это просто функция, которую можно вызвать.
TheBlakeRed, сорь что не ответил сразу, в бане сидел, в общем у тебя вместо включения триггера на вход - его выключение, а портал у тебя не тот стоял в условиях, равкоды смотреть надо, у людей во вкладке кампания такой портал, а у тебя нейтралы - сражения - ашенвальский портал, который как здание выглядит
в общем я поправил и добавил ещё один вариант со стандартным порталом, тебе нужно просто разблокировать одни функции на портал и заблокировать/удалить другие, думаю ты разберёшься
Переключающий юнит - это triggering unit?
Кто делал этот перевод?
Вместо triggering unit для цикла нужен picked unit. Как это в русских триггерах - хз.
BrandY TM, моста нет, есть область, при входе в которую фиксируется абсолютная высота юнитов. В зависимости от высоты определяется проходимость для каждого конкретного юнита (эмулируется не очень просто, но тем не менее).
Ну и само собой разумеется, есть метод с платформами и переключателями.
ххххххх
Ну дык.
Ты пикаешь всех юнитов вокруг позиции кастера.
В т.ч. кастера.
Он же не враг сам себе)
так что выполнится оба действия могут)
и если там дамми есть - в ту же пачку, могут вызвать срабатывание.
Я фильтрую дамми по левелу, лвл дамми ставлю 0.
у парня проблемы с алгоритмом, в какой вселенной 0.01 * 10 не 0.1?
В компьютерной. И да, 0.01 * 10 тоже может быть не равно 0.01 + ... + 0.01. Потому что складываются и умножаются real по-разному. Hate, надо просто использовать целочисленные, или пользоваться ==, в JASS == округляет числа для сравнения (!= не округляет).
Пороверил разные варианты, сразу упомяну, что с целочисленными всё огонь, просто какие-то другие воспоминания с ними всплывали. PT153, сначала не понял, зачем мне твоя строчка, она всего лишь выдавала 0.1 вместо 0.100, но тестировал разные варианты и всё прояснилось. Если задавать шаг 1.0, то всё исправно считается до 10.0, если задавать шаг 0.2, то всё считается до 2.2 и отображается ровно, но если сделать шаг 1.01, то вот тут и появляется то, ради чего ты эту строчку дал.
Именно с дробной частью косяк, и теперь не знаю как выбрать лучший ответ, по идее у тебя в каждом комментарии полезная информация. Просто объединил их в итоге.
Ну я был бы удивлен если бы код работал даже в сингле, гуи карта, много утечек, куча переодиков, так на первый взгляд код не учитывает что игроков будет много и все они что то будут делать. Так же возможны десинхи из-за кривого кода, это и на гуи бывает... Огромное кол-во вейтв и циклов с вейтами, это сразу убирайте - в мультиплеере это работать не будет.
Увы конечно интересная задумка карты, но реализация очень слабая и на игру по сети не претендует, более грамотно продумывайте код и не плодите утечки, то их у вас овер дофига что равно игра закроется с фаталом после превышения лимита памяти.
Собственно путем проб и ошибок нашел решение.
В общем для "дома вождей" добавил условие. При котором дом вождей строится только если. Дом вождей = 0, Крепость = 0, Дворец = 0. У меня названия другие, но для понятности написал так. Скрин ниже. Вдруг кому то пригодится :D
Если падает скрипт с AI (файл .ai это обычный код на Jass), то игра видимо ничего не показывает, но и ИИ не работает. То есть, чтобы узнать из-за чего, надо продокументировать common.ai нативки в 1.26, 1.29 и потом посмотреть, в чём отличия и что игре не нравится.
Можно, конечно, просто сравнить common.ai от 1.26 и 1.29, может используются функции, которых не было. Тогда всё относительно просто.
Событие - постройка завершена
Действие: Если тип юнита (построенное здание) = стена,
то установить переменую-точку = позиция (построенного здания),
удалить (построенное здание)
создать декорацию типа "Стена-декорация" в точке-переменной
удалить точку
Пишу с работы, редактора под рукой нет. Прошу за ошибки и неточности простить))
Ошибкой было перемещать ресурсы при 1 уровнем проекта без менеджера проектов, который за это отвечает
Теперь придётся все снова заливать
Задача для 1 уровень проекта - только составить главную, потом нужно ждать дальнейшие задания уже от менеджера проекта, который выдаст 2 уровень и разрешит переместить ресурсы
DarkRaven Best, в картах есть 2 файла с кодом
j и wct
wct содержит тот код который отображается в редакторе
j файл содержит окончательный код который и работает в игре(с переменными, генерируемыми функциями и результатом гуи)
проги для взлома карт тупо перемещает код из j файла в wct (в том числе и генерируемые функции наподобие main)
при попытке сохранения карты код из wct перемещается в j и генерируются системные функции (например main)
но т.к. генерируемые функции уже перенеслись в j из wct получается повторение функций( например main из wct + сгенерированный main)
если же удалить/переименовать лишние функции в редакторе то функции будут сгенерированны не правильно (например в main будет отсутствовать инициализация библиотек)
для того чтобы всё нормально работало надо открыть карту в mpq редакторе и ручками править wct файл вычищая из него всё лишнее
для этого надо хорошо знать джасс
Вджасс это дополнение к обычному джассу, у себя ты можешь видеть строки объявления библиотеки, продвинутые комментарии и статические константные переменные
В том и дело что ОТВЕТА - НЕТ.Способность я НЕ кастую.Я проверяю - есть ли она у героя, и какого она уровня. Мне нужна ПАССИВНАЯ, способность. В данном случае моя способность блокирует часть урона, в зависимости от уровня, она не является пустышкой. Всё. Теперь я в тригере делаю проверку - что способность у героя есть. И если она есть, то на каждом 20-м ударе по герою, будет добавлятся способность - защита +10, или больше, взависимости от уровня способности, и затем через 30 секунд удалятся.
Я не спрашивал как кастовать скилл, и как с ним работать.
Я спросил другое:
ПОЧЕМУ? Почему способность сама по себе работает(ОНА ПАССИВНАЯ, и она работает), а обращение к ней тригера(ПРОВЕРКА того что, способность у героя есть), даже если сам тригер не активируется(СОБЫТИЕ, ещё ни разу не произошло, или галочка "изначально включен" убрана), ломает игру?
Прочитай внимательно всё что я писал пожалуйста, у меня просто ощущение что ты не всё прочитал, и не всё скрины посмотрел.
В общем и целом. Подвожу итоги:
Проблема оказалась конкретно в способности. Я так посмотрел, она видимо каким-то образом забаговалась.
Она была сделана на основе способности "каменные доспехи", но конкретно у этой способности почему-то изначальная раса была "наги". Т.е. это уже странно, потому что эта способность изначально от "ночных эльфов". Кроме этого, я отличий от стандарта в ней никаких не видел.
Я ее удалил, создал абсолютно такую же способность, и она работает, всё запускается. Скилл(тригерный) я сделал ровно так как и хотел, никакой ошибки в нём нет и не было в помине, о чем я в принципе подозревал с самого начала. Не знаю с чем связать этот баг, поэтому в принципе вопрос закрываю. Ответ на него я нашёл сам: это баг редактора.
Других вариантов я не вижу.
Анихак лаунчер заточен под борьбу с картой лича, поэтому не дает запускать все карты с мемхаком, пока есть возможноть это обойти - моя карта яркий пример, а так инфы подробной в паблик никто не сливал чтобы ракап не сделал апгрейд защиты...
у меня складывается такое ощущение что ваш блокнот не умеет работать с этими символами
попробуйте вместо "Манакост" написать вот это "Манакост" это "Манакост" в UTF8
Символы отсюда xgm.guru/p/100/223668
Вставляю в гугл переводчик, мне выдает какие то непонятные слова и туча исправлений
Если я этот же текст беру и вставляю напрямую в hex редакторе и потом открываю txt в блокноте, то уже текст из блокнота нормально переводится в переводчике
Хм... лет десять назад я мог понять желание сделать карту 480х480 с кучей систем и геймплеем полностью отличающимся от варовского. Тогда не было инструментов, чтобы создавать игру своей мечты, а редактор варика давал некоторую простоту воплощения своих замыслов и некоторое же удобство. Небольшие, на самом деле, но простота и удобство были. Просто другие варианты были ещё хуже в плане простоты и удобства. И ещё интернет у большинства не позволял скачивать слишком уж много. А сейчас? Всем, у кого есть хоть малейшее желание создавать игры предлагают десятки простых и удобных инструментов, часто ещё и бесплатно, обучение, развитые сообщества, в которых можно найти единомышленников, огромное количество ресурсов под лицензией Creative Commons или просто бесплатных для некоммерческого использования на любой вкус (а если не борзеть и пиратить или плагиатить аккуратно - то это количество увеличивается многократно), простоту распространения своего творчества, возможности монетизации и трудоустройства в сфере геймдева - в общем всё, о чём те самые десять лет назад можно было только мечтать. Зачем продолжать мучать варкрафт и себя? Не осуждаю, просто не понимаю.
Согласен, информационный век на дворе, все сделано за нас, учиться надо, но и упрощать работу надо уметь, компьютеры для этого и были изобретены.
Я знаю что это координаты умник.. пустые придирки не прокатят
я не только про координаты, я про всё
короче судя по всему ты пытаешься написать прогу которая бы думала вместо тебя
и это очень пичально
поэтому я просто оставлю это здесь
quq_CCCP, тогда ну нафиг
это полноценный реверс инженеринг уже будет Asaaaaaar, короче это потребует кучу времени и никто тут этим заниматься скорее всего не будет
думаю даже за платно сложно будет найти того кто согласится убить кучу времени на это
Сделай способности добычи у работников много уровней, и при определённых условиях(здание построено, здание умирает) меняй уровень этой способности у всех рабочих на карте(ну, при создании каждого рабочего, смотри на коилчество таких зданий на карте через отряд, и устанавливай уровень способности у рабочего)
Каждый вопрос заслуживает отдельного обсуждения, а на все стало лень ответ печатать, когда начал.
Печатать реально долго, легче было реализовать примеры в карте:
Кроме последнего пункта, его нужно персонально рассматривать, так как игра не подразумевает использование для юнита двух списков. Например, можно наполнить список построек у юнита всеми зданиями, часть из которых блокировать при открытии одного списка и разблокировать при открытии второго, но это подходит, когда один рабочий. Можно сделать второй список из книги заклинаний, куда добавлены способности на основе игрушечных строений, чтобы было видно карту пути и всё такое, но там для них используется один приказ, то есть всегда одинаковое здание будет при нажатии на любую способность, а ещё нет стоимости золота и дерева, что тоже придётся как-то ваять триггерно. Можно перевоплощать юнита при смене списка в другого, но там тоже сложности, не помню точно какие, вроде бы связаны с расой, так как все строят по-разному.
С точкой сбора всё просто. Способность у игрока не заблокировать, потому нужно забрать её у всех зданий, которые есть на карте, либо будут построены.
Группа из максимум 9 юнитов работает немножко коряво, ранее мы с PT153 находили какой-то вариант, чтобы работало быстро, но лень пользоваться поиском. Вроде каждую 0.01 секунду проверялось количество выбранных юнитов, лишние удалялись из выбора.
Чтобы не было очереди, пришёл в голову лишь вариант с апгрейдом здания. Но у меня реализован просто пример для одного конкретного здания, а для нескольких абстрактных зданий нужно делать текстовым триггером, который будет для каждого здания запускать локальный таймер на нужное время и добавлять анимационный текстаг work. По отмене апгрейда, либо истечению таймера анимационный тег удаляется и создаётся воин, к которому привязывается соответствующий звук. Но есть и другие варианты, типа создавать внутри здания другое, которое реально будет производить юнитов, когда заказал апгрейд, там иная реализация. И не упомянул про затрачиваемые ресурсы. Потребуется забирать/возвращать часть ресурсов при отмене апгрейда.
На примере триггеров и фиолетовых строк в редакторе объектов смотри, как сделано улучшение Бугая в Дренорского бугая.
Конечно, мог бы сделать MUI триггер на GUI для отсутствия очереди, но это было бы громоздко и в техническом смысле уродливо. производящие здания заносились бы в массив, для которого будет массив таймеров, которые будут заноситься в виде событий на истечение таймера в другой триггер, а точнее будет несколько массивов таймеров, по максимальному числу тренируемых юнитов в любом производящем здании.
Вместо (юнит триггера) вставишь своего героя. (Скрин внизу)
Редактор обьектов ---> Способности ---> нейтрально-враждебные ---> герои ---> повышение характеристик (редактируешь или создаешь нестандартную и редактируешь под себя)
Если цель именно в стоянии, то самый надёжный способ через сравнение координат с некоторой погрешностью. Также можно через отслеживание приказов, реализацию смотреть тут.
Наглядный пример того, что бег в результате агра не отдаёт никакого приказа.
Единственное, что приходит в голову - это дамми-юнит размером чуть больше экрана, с моделью в виде белого прямоугольника, параллельного земле. Триггерно можно сделать его невыбираемым, перемещать в точку, куда направлена камера игрока (если центр модели не видно, то всю модель не видно) и задавать цвет с прозрачностью. А зачем в роликах такая информация?
» WarCraft 3 / Старая крепость
» WarCraft 3 / импорт карт в blender
» WarCraft 3 / Warcraft III: Will of the Legion (Временно закрыто)
» WarCraft 3 / Помощь с триггером WC3
» WarCraft 3 / Телепорт Юнитов
» WarCraft 3 / Не срабатывает условие
» WarCraft 3 / фентези риск (самая первая версия)
» WarCraft 3 / AI в карте
» WarCraft 3 / ИИ и главное здание
» Администрация XGM / Перенос ресурса в проект.
» WarCraft 3 / Проблема с запуском редактора и Jass
» WarCraft 3 / Проблема с запуском карты
» WarCraft 3 / ItemPool
» WarCraft 3 / Код Jass
» Администрация XGM / Смена ника на сайте
» WarCraft 3 / Как взломать карту Warcraft 3?
» WarCraft 3 / Как сделать лимит улучшений?
» WarCraft 3 / Как сделать проверку?
» WarCraft 3 / ИИ и способности
» WarCraft 3 / Массив в магазине.
» WarCraft 3 / Исправление вылета кампании Reforged